﻿using System.Linq;
using System.Collections.Generic;
using System.Web;
using Follow.Model;
using Follow.DataAccess;
using Follow.Common;
using System;

namespace Follow.Business
{
    public class ContatoBO
    {
        public IList<Contato> findAll()
        {
            ContatoDAO dao = new ContatoDAO();
            return dao.findAll();
        }

        //public IList<Contato> findByName(string nome)
        //{
        //    ContatoDAO dao = new ContatoDAO();
        //    return dao.findByName(nome);
        //}

        public Contato load(int id)
        {
            ContatoDAO dao = new ContatoDAO();
            return dao.findById(id);
        }

        public IList<Funcionalidade> findByUser(Usuario usuario)
        {
            FuncionalidadeDAO dao = new FuncionalidadeDAO();
            return dao.findByUsuario(usuario.IDUsuario);
        }

        public IList<Contato> findByCliente(int id)
        {
            ContatoDAO dao = new ContatoDAO();
            return dao.findByCliente(id);
        }

        public void save(Contato contato, Int32 idlogin)
        {
            ContatoDAO dao = new ContatoDAO();

            if (contato.IDContato == int.MinValue || contato.IDContato.Equals(0))
            {
                dao.insert(contato, idlogin);
            }
            else
            {
                dao.update(contato, idlogin);
            }
        }



        public void delete(Int32 id, Int32 idlogin)
        {
            ContatoDAO dao = new ContatoDAO();
            validarExclusao(id);
            dao.delete(id, idlogin);
        }

        public void validarExclusao(int id)
        {
            PropostaDAO dao = new PropostaDAO();
            Cliente cliente = dao.findByIdCliente(id);

            if (cliente != null)
            {
                throw new Exception("Esse contato não pode ser excluído. Ele está relacionado a uma proposta.");
            }
        }

        public Contato findByUsuarioContato(Int32 id)
        {
            ContatoDAO dao = new ContatoDAO();
            return dao.findByIdUsuarioContato(id);
        }

        
    }
}